package com.es.designmode.chain;

/**
 * 职责链模式
 * 使多个对象都有机会处理请求，从而避免请求的发送者和接收者之间的耦合关系
 * 将这个对象连成一条链，并沿着这条链传递请求，直到有一个对象处理它为止
 * <p>
 * 个人理解，可以降低条件顺序执行之间的耦合
 *
 * @author Will
 */
public class ClientSide {

    public static void main(String[] args) {

        Handler h1 = new ConcreteHandler1();
        Handler h2 = new ConcreteHandler2();
        Handler h3 = new ConcreteHandler3();

        h1.setSuccessor(h2);
        h2.setSuccessor(h3);

        int[] requests = new int[]{2, 23, 12, 76, 232, 7, 10, 21};

        for (int i : requests) {
            // 只给第一位就可以，因为会调用它的继任者的方法
            h1.handleRequest(i);
        }

    }
}
